package com.ruoyi.counter.service.impl;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.List;

import com.ruoyi.common.annotation.DataScope;
import com.ruoyi.counter.domain.Thtype;
import com.ruoyi.counter.mapper.ThtypeMapper;
import com.ruoyi.counter.service.IThtypeService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.ruoyi.counter.mapper.ToolsMapper;
import com.ruoyi.counter.domain.Tools;
import com.ruoyi.counter.service.IToolsService;



/**
 * 工具(设备）Service业务层处理
 *
 * @author xll
 * @date 2021-07-26
 */
@Service
public class ToolsServiceImpl implements IToolsService
{
    @Autowired
    private ToolsMapper toolsMapper;

    @Autowired
    private ThtypeMapper thtypeMapper;


    /**
     16      * 指定日期加上天数后的日期
     17      * @param num 为增加的天数
     18      * @param newDate 创建时间
     19      * @return
     20      * @throws ParseException
     21      */
    public static String plusDay(int num,String newDate) throws ParseException {
        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
        Date currdate = format.parse(newDate);
        System.out.println("现在的日期是：" + currdate);
        Calendar ca = Calendar.getInstance();
        ca.setTime(currdate);
        ca.add(Calendar.DATE, num);// num为增加的天数，可以改变的
        currdate = ca.getTime();
        String enddate = format.format(currdate);
        System.out.println("增加天数以后的日期：" + enddate);
        return enddate;
    }

    /**
     * 查询工具(设备）
     *
     * @param toolid 工具(设备）ID
     * @return 工具(设备）
     */
    @Override
    public Tools selectToolsById(Long toolid)
    {
        return toolsMapper.selectToolsById(toolid);
    }

    /**
     * 查询工具(设备）列表
     *
     * @param tools 工具(设备）
     * @return 工具(设备）
     */
    @Override
    @DataScope(deptAlias = "a")
    public List<Tools> selectToolsList(Tools tools)
    {
        return toolsMapper.selectToolsList(tools);
    }

    public List<Tools> selectToolsAllList(Tools tools)
    {
        return toolsMapper.selectToolsAllList(tools);
    }



    /**
     * 新增工具(设备）
     *
     * @param tools 工具(设备）
     * @return 结果
     */
    @Override
    public int insertTools(Tools tools)
    {
        tools.setDeptId(Long.valueOf(tools.getOrganid()));
        return toolsMapper.insertTools(tools);
    }

    /**
     * 修改工具(设备）
     *
     * @param tools 工具(设备）
     * @return 结果
     */
    @Override
    public int updateTools(Tools tools) throws ParseException {


        Thtype thtype = new Thtype();
        tools.setDeptId(Long.valueOf(tools.getOrganid()));
        //1 报废操作交易  2 报损操作交易 3 试检操作完成交易（如果是报损的工具，试检以后功能恢复正常状态';
        if(tools.getTradeType().equals("1"))
        {
           //报废操作交易
            tools.setToosstatus("1");

        }else if(tools.getTradeType().equals("2"))
        {
            //报损操作交易
            tools.setToosstatus("2");
        }
        else if(tools.getTradeType().equals("3"))
        {
            //根据类型ID 找到定检查周期，更新时间
            thtype = thtypeMapper.selectThtypeById(Long.valueOf(tools.getTypeid()));
            Date date = new Date();
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
            String dateNowStr = sdf.format(date);
            if (thtype.getTm()!= null && thtype.getTm().intValue() >0)
                tools.setIsouttm(plusDay(thtype.getTm().intValue() * 30 , dateNowStr));
            //试检操作完成交易（如果是报损的工具，试检以后功能恢复正常状态';
            tools.setToosstatus("0");
        }else
        {
            //no todo
        }
        return toolsMapper.updateTools(tools);
    }

    /**
     * 批量删除工具(设备）
     *
     * @param toolids 需要删除的工具(设备）ID
     * @return 结果
     */
    @Override
    public int deleteToolsByIds(Long[] toolids)
    {
        return toolsMapper.deleteToolsByIds(toolids);
    }

    /**
     * 删除工具(设备）信息
     *
     * @param toolid 工具(设备）ID
     * @return 结果
     */
    @Override
    public int deleteToolsById(Long toolid)
    {
        return toolsMapper.deleteToolsById(toolid);
    }
}
